Coded light is a method for three-dimensional (3D) geometry acquisition, in which the object of interest is illuminated by a time-multiplexed sequence of patterns, e.g., horizontal strips of varying width, forming a binary code. Using a camera calibrated with the projecting system, the 3D geometry is recovered by triangulation (the code allows to establish correspondence between the camera and the projector coordinate systems).
A critical element of a coded light camera is the projection system capable of illuminating the object with a rapidly changing sequence of patterns. Typically, 88-10 patterns are required to reconstruct a 3D image with sufficiently high resolution; hence, in order to acquire 30 3D frames/second, the projector must be able to project the patterns at 200 fps. Current available designs based e.g. on TI DMD micro-mirror arrays are too expensive.
Typically, the sequence of projected patterns consists of b binary code patterns (I0, . . . , Ib), for example, plain binary or Gray code. Since the patterns are projected into an object with potentially widely varying reflectivity properties (albedo) and due to background illumination, the image of the object illuminated by each pattern acquired by means of the camera contains continuous gray levels that must be binarized (converted into values of 1 at illuminated pixels and 0 at dark pixels). for this purpose, additional patterns B (full dark) and W (full bright) are often used. The binarization of code patter I at each pixel is performed according to the following formula: I′=(I−B)/(W−B). The pixel is assigned the value of 1 is I′>0 and 0 if I′<0.
Next, the binarized images I′0, . . . , I′b are used to form a code C at each pixel; for example, if plain binary code is used, C=I′b+21I′b-1+22I′b-2+ . . . 2bI′0. The code image C encodes the number of a horizontal plane in projector system of coordinates; from its intersection with a ray in the camera system of coordinates (assuming calibrated system), the 3D coordinates of each pixel are recovered.
With such an approach, in order to obtain a single 3D frame, it is required to project b+2 patterns. If the projection rate is P fps, the frame rate of the 3D camera system, is (b+2)/p 3D frames/sec.
Furthermore, due to possible motion of the scanned object, the dark and bright frames B and W will be updated at the rate p/(b+2) frames/sec. As a result, the binarization of the code patterns will be incorrect due to the displacement of pixels between a code pattern I and the frames B and W. This will result in wrong code reconstruction. The most significant effect will be caused in most significant bits (MSB) of the code (patterns I0,11, etc.). For this reason, it is desirable to place B and W as close as possible to the MSB patterns, e.g. as
B W I0I1I2 . . . Ib B W I0I1 . . . Ib 